#include "chaineEntree.h"

int chaineEntreeEstNull (pChaineEntreeNode chaine)
{
	return chaine == NULL;
}

pChaineEntreeNode nextChaineEntreeNode(pChaineEntreeNode node)
{
	if(chaineEntreeEstNull(node))
	{
		printf("Erreur : nextChaineEntreeNode : node null;\n");
		exit(-1);
	}
	return (pChaineEntreeNode)node->next;
}

entree valeurChaineEntreeNode(pChaineEntreeNode node)
{
	if(chaineEntreeEstNull(node))
	{
		printf("Erreur : valeurChaineEntreeNode : node null;\n");
		exit(-1);
	}
	return node->valeur;
}

pChaineEntreeNode nouveauChaineEntreeNode (entree valeur)
{
	pChaineEntreeNode node = malloc(sizeof(struct chaineEntreeNode));
	node->valeur = valeur;
	node->next = NULL;
	return node;
}

pChaineEntreeNode ajoutChaineEntreeNodeDebut(entree valeur, pChaineEntreeNode chaine)
{	
	pChaineEntreeNode nouveauNode = nouveauChaineEntreeNode(valeur);
	nouveauNode->next = chaine;
	return nouveauNode;
}

pChaineEntreeNode suppressionChaineEntreeDebut (pChaineEntreeNode chaine)
{
	if(chaineEntreeEstNull(chaine))
	{
		printf("Erreur : suppressionChaineEntreeDebut : chaine null.\n");
		exit(-1);
	}

	return chaine->next;
}

void afficheChaineEntree (pChaineEntreeNode chaine)
{
	if(chaineEntreeEstNull(chaine))
	{
		printf("Chaine vide\n");
		return;
	}
	
	do
	{
		printf("(%s) ", entreeToString(valeurChaineEntreeNode(chaine)));
		chaine = nextChaineEntreeNode(chaine);
	}	
	while(!chaineEntreeEstNull(chaine));
	printf("\n");
}
